package org.Yiran.timetale_re.tile;

import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import org.Yiran.timetale_re.Timetale_re;
import org.Yiran.timetale_re.block.BlocksRegister;
import org.Yiran.timetale_re.tile.blocktile.LongTableBlockEntity;

/**
 * 方块实体注册类
 * <p>
 * 该类负责注册和管理模组中使用的所有自定义方块实体类型。
 * 使用Minecraft Forge的延迟注册系统来注册方块实体，确保与游戏生命周期正确集成。
 * </p>
 * 
 * @author Yiran
 * @version 1.0
 */
public class TileEntityRegister {
    
    // ================================ 方块实体注册器 ================================
    
    /**
     * 方块实体类型的延迟注册器
     * <p>
     * 使用Forge的DeferredRegister系统来管理BlockEntityType的注册，
     * 确保在正确的时机进行注册，避免游戏启动时出现问题。
     * </p>
     */
    public static final DeferredRegister<BlockEntityType<?>> TILE_ENTITIES = 
        DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, Timetale_re.MODID);

    // ================================ 方块实体类型注册 ================================
    
    /**
     * 长桌方块实体类型注册对象
     * <p>
     * 注册长桌方块实体类型，将其与长桌方块关联。
     * 当长桌方块被放置在世界中时，会自动创建此类型的方块实体。
     * </p>
     */
    public static final RegistryObject<BlockEntityType<LongTableBlockEntity>> LONG_TABLE_BLOCK_ENTITY =
            TILE_ENTITIES.register("long_table_block_entity", () -> 
                    BlockEntityType.Builder.of(LongTableBlockEntity::new,
                            BlocksRegister.LONG_TABLE.get()).build(null));
}